package com.czp.role.mapper;

import java.util.List;

import org.apache.ibatis.session.RowBounds;

import com.czp.menu.model.Menu;
import com.czp.role.model.RelationMenu;
import com.czp.role.model.Role;

/**
 * 【环 境】：J2SE 1.7
 * @author   柴志鹏	CHAIZP@GMAIL.COM
 * @version  version 1.0
 * @since    2014-6-12
 */
public interface IRoleMapper {
	/** 
	 * 【描 述】：查询角色信息
	 * @param Role角色
	 * @param RowBounds(start, limit)
	 * @return 角色集合
	 * @throws Exception
	 */
	List<Role> getRoleList(Role role, RowBounds bounds) throws Exception;
	
	/** 
	 * 【描 述】：根据条件查询角色信息数量
	 * @param Role角色
	 * @return 总合
	 * @throws Exception
	 */
	int getRoleRecords(Role role) throws Exception;
	
	/** 
	 * 【描 述】：新增一条角色信息
	 * @param Role
	 * @return 被影响的行数
	 * @throws Exception
	 */
	int insertRole(Role role) throws Exception;
	
	/** 
	 * 【描 述】：通过ID修改一条角色信息
	 * @param Role(id)
	 * @return 被影响的行数
	 * @throws Exception
	 */
	int updateRole(Role role) throws Exception;
	
	/** 
	 * 【描 述】：根据ID删除一条角色信息
	 * @param Role(id)
	 * @return 被影响的数量
	 * @throws Exception
	 */
	int deleteRole(Role role) throws Exception;
	
	/** 
	 * 【描 述】：通过角色ID查询菜单关联项
	 * @param Role(角色Id, 菜单名称)
	 * @param RowBounds(start起始, limit限量)
	 * @return 菜单集合
	 * @throws Exception
	 */
	List<Menu> getRelationMenuList(Role role, RowBounds bounds) throws Exception;
	
	/** 
	 * 【描 述】：根据角色Id查询关联菜单数量
	 * @param Role(角色Id, 菜单名称)
	 * @return 总合
	 * @throws Exception
	 */
	int getRelationMenuRecords(Role role) throws Exception;
	
	/** 
	 * 【描 述】：根据Id或角色Id与菜单Id删除菜单关联项
	 * @param RelationMenu(id,roleId,menuId)
	 * @return 被删除的数量
	 * @throws Exception
	 */
	int deleteRelationMenu(RelationMenu relMenu) throws Exception;
	
	/** 
	 * 【描 述】：添加一天关联菜单
	 * @param RelationMenu(roleId,menuId)
	 * @return 添加的数量
	 * @throws Exception
	 */
	int insertRelationMenu(RelationMenu relMenu) throws Exception;
	
	/** 
	 * 【描 述】：通过角色Id与菜单Id查询指定关联菜单是否存在
	 * @param RelationMenu(角色Id，菜单Id)
	 * @return 数量
	 * @throws Exception
	 */
	int matchAddRelationMenu(RelationMenu relMenu) throws Exception;
	
	/** 
	 * 【描 述】：查询功能菜单与授权情况
	 * @param RelationMenu(role,pid,menuType)
	 * @return 菜单集合
	 * @throws Exception
	 */
	List<Menu> queryRelationMenu(RelationMenu relMenu) throws Exception;
	
}
